#ifndef MPU6050_I2C_HARD
#include "stm32f10x.h"

#define MPU6050_I2C_HARD

typedef struct {
    int16_t x_acc;
    int16_t y_acc;
    int16_t z_acc;
    int16_t tmeperature;
    int16_t x_gyr;
    int16_t y_gyr;
    int16_t z_gyr;
} mpu6050_data;


/**
 * 解析后的加速度计数值
*/
typedef struct {

    float ax;
    float ay;
    float az;

} accleration;

/*
    解析后的陀螺仪的角速度数值
*/
typedef struct{

    float gx;
    float gy;
    float gz;

} angular_velocity;

typedef struct{
    // 绕 x 轴的横滚角（加速度计）
    float roll_acc;
    // 绕 y 轴的俯仰角（加速度计）
    float pitch_acc;
    
    // 绕 x 轴的横滚角（陀螺仪）
    float roll_gyr;   
    // 绕 y 轴的俯仰角（陀螺仪）
    float pitch_gyr;
    
    // 绕 z 轴的偏航角
    float yaw;
} Euler_Angles;

// 经过数据融合之后的欧拉角
typedef struct {
    // 横滚角
    float roll;
    // 俯仰角
    float pitch;
    // 偏航角
    float yaw;

} Integrated_Euler_Angles;


void init_mpu_6050(void);

mpu6050_data* read_6_axises( void);

void calculate_euler_angles(Integrated_Euler_Angles * integrated_euler_angles);
#endif
